package com.taotao.template;

import com.taotao.template.imple.RedisDistrbutedLockTemplate;
import lombok.extern.slf4j.Slf4j;

/**
 * @author wangjin
 * @title: DistributedLockTemplate
 * @projectName designmodule
 * @description: TODO
 * @date 2022/6/18 0018 16:57
 */
@Slf4j
public abstract class DistributedLockTemplate {
    //分布式模板

    /**
     * @return * @return: null
     * @Author wangjin
     * @Description //获取锁的方法
     * @Date 2022/6/18 0018
     * @Param * @param null:
     **/
    public void LockTemplate() {
        //开始时间
        Long startTime = System.currentTimeMillis();
        tryLock();
        //结束时间
        Long endTime = System.currentTimeMillis();
        log.info("获取锁的时间:{}",(endTime-startTime));
    }

    protected abstract void tryLock();

    //释放锁的方法
    public void unlockTemplate() {
        //开始时间
        Long startTime = System.currentTimeMillis();
        tryunlock();
        //结束时间
        Long endTime = System.currentTimeMillis();
        log.info("释放锁的时间:{}",(endTime-startTime));
    }

    protected abstract void tryunlock();

    public static void main(String[] args) {
        DistributedLockTemplate distributedLockTemplat=new RedisDistrbutedLockTemplate();
        distributedLockTemplat.LockTemplate();
    }
}
